← Back to issue list

pip fails when project requirement result binary already exists

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1861638
Type
issue
State
open
Author
~daveparrish
Labels
pip plugin
Created
2020-02-02 23:42:47.252314+00:00
Updated
2020-02-03 01:08:39.604944+00:00
Closed

Current evaluation

No evaluation has been recorded for this issue yet.

Issue body

When trying to Snap the JoinMarket project on Github. I noticed that when running snapcraft for the second time, would fail because a result binary already exists, and pip didn't have a `--exists-action` set. In the patch, I'm not sure if it would be better to (i)gnore or (w)ipe for the default action. I've included a patch which fixes the issue for me. I also have included the error message I am getting, along with my snapcraft.yml. Error message: ``` Updating pull step for joinmarket (source changed) Obtaining file:///root/project/jmbase (from -r /root/parts/joinmarket/build/requirements/base.txt (line 1)) The file /root/parts/joinmarket/python-packages/joinmarketbase-0.6.1.zip exists. (i)gnore, (w)ipe, (b)ackup, (a)bort ERROR: Exception: Traceback (most recent call last):   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 186, in _main     status = self.run(options, args)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/commands/download.py", line 135, in run     resolver.resolve(requirement_set)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 177, in resolve     discovered_reqs.extend(self._resolve_one(requirement_set, req))   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 333, in _resolve_one     abstract_dist = self._get_abstract_dist_for(req_to_install)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 265, in _get_abstract_dist_for     return self.preparer.prepare_editable_requirement(req)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 559, in prepare_editable_requirement     req.archive(self.download_dir)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/req/req_install.py", line 721, in archive     display_path(archive_path), ('i', 'w', 'b', 'a'))   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/utils/misc.py", line 223, in ask_path_exists     return ask(message, options)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/utils/misc.py", line 241, in ask     response = input(message) EOFError: EOF when reading a line Failed to run '/root/stage/usr/bin/python3 -m pip download --disable-pip-version-check --dest /root/parts/joinmarket/python-packages --requirement /root/parts/joinmarket/build/requirements/gui.txt': Exited with code 2. ``` snapcraft.yaml ``` name: joinmarket base: core18 version: master summary: Software to assist in creating bitcoin CoinJoin transactions description: |   JoinMarket is software to create a special kind of bitcoin transaction called a CoinJoin transaction. It's aim is to improve the confidentiality and privacy of bitcoin transactions. confinement: devmode grade: devel #icon: icon.png apps:   joinmarket-qt:     extensions:       - kde-neon     command: usr/bin/jm     plugs:       - network       - network-bind       - desktop       - desktop-legacy       - x11       - wayland       - home parts:   joinmarket:     plugin: python     source: .     requirements:       - requirements/gui.txt     override-build: |       snapcraftctl build       pwd       ls -alh       #cd ../install       mkdir -p /root/parts/joinmarket/install/opt       cp -rp /root/parts/joinmarket/build /root/parts/joinmarket/install/opt       mv /root/parts/joinmarket/install/opt/build /root/parts/joinmarket/install/opt/joinmarket   # Install desktop launcher   launchers:     plugin: dump     source: .     organize:       'snap/jm': usr/bin/jm     after:       - joinmarket ```

Evaluation history

No evaluation history available.